/**
 * 鱼塘选择相关工具函数
 */

/**
 * 将树形鱼塘数据扁平化，只保留叶节点
 * @param {Array} treeData 树形数据
 * @param {String} parentPath 父级路径，用于构建完整的显示名称
 * @returns {Array} 扁平化的叶节点数组
 */
export function flattenPondTreeToLeafNodes(treeData, parentPath = '') {
  const result = []
  
  if (!Array.isArray(treeData)) {
    return result
  }
  
  treeData.forEach(node => {
    // 构建当前节点的完整路径
    const nodeName = node.pondName || node.label || node.name || `节点${node.id}`
    const currentPath = parentPath ? `${parentPath} / ${nodeName}` : nodeName
    
    // 判断是否为叶节点（没有子节点或子节点为空）
    const hasChildren = node.children && Array.isArray(node.children) && node.children.length > 0
    
    if (!hasChildren) {
      // 叶节点，添加到结果中
      result.push({
        id: node.pondId || node.id,
        label: currentPath,
        value: node.pondId || node.id,
        pondName: nodeName,
        fullPath: currentPath,
        originalData: node
      })
    } else {
      // 非叶节点，递归处理子节点
      const childNodes = flattenPondTreeToLeafNodes(node.children, currentPath)
      result.push(...childNodes)
    }
  })
  
  return result
}

/**
 * 从扁平化的鱼塘数据中查找指定ID的鱼塘信息
 * @param {Array} flatPondList 扁平化的鱼塘列表
 * @param {String|Number} pondId 鱼塘ID
 * @returns {Object|null} 找到的鱼塘信息
 */
export function findPondById(flatPondList, pondId) {
  if (!Array.isArray(flatPondList) || !pondId) {
    return null
  }
  
  return flatPondList.find(pond => pond.id == pondId) || null
}

/**
 * 验证鱼塘ID是否存在于扁平化列表中
 * @param {Array} flatPondList 扁平化的鱼塘列表
 * @param {String|Number} pondId 鱼塘ID
 * @returns {Boolean} 是否存在
 */
export function validatePondId(flatPondList, pondId) {
  return findPondById(flatPondList, pondId) !== null
}

/**
 * 获取鱼塘的完整路径名称
 * @param {Array} flatPondList 扁平化的鱼塘列表
 * @param {String|Number} pondId 鱼塘ID
 * @returns {String} 完整路径名称
 */
export function getPondFullPath(flatPondList, pondId) {
  const pond = findPondById(flatPondList, pondId)
  return pond ? pond.fullPath : ''
}